package org.hy.service.group;

import java.util.List;
import java.util.Map;

import org.hy.domain.group.GAnswer;
import org.hy.domain.group.GDiscuss;

/**
 * 讨论接口
 * @author xwm
 *
 */
public interface IGDiscussService {
	
	/**
	 * 添加讨论
	 * @param discuss 讨论对象
	 * @return 
	 */
	int addGDiscuss(GDiscuss discuss);
	
	/**
	 * 添加回答
	 * @param answer回答对象
	 * @return
	 */
	int addAnswer(GAnswer answer);
	
	int updateGDiscuss(GDiscuss discuss);
	
	int updateGAnswer(GAnswer answer);
	
	/**
	 * 删除讨论,ownerIdGm与讨论的实际发布者想同时才能删除.
	 * @param id 讨论Id
	 * @param ownerIdGm 讨论发布者的组内成员id
	 * @return
	 */
	int deleteGDiscuss(int id,int ownerIdGm);
	
	/**
	 * 删除回复,实际发布者或讨论发布者可以删除回复.
	 * @param id 回答Id
	 * @param ownerIdGm 回答发布者的组内成员id或讨论发布者的组员成员Id
	 * @return
	 */
	int deleteGAnswer(int id,int ownerIdGm);
	
	
	/**
	 * 分页查找小组的讨论
	 * @param gid 小组id
	 * @param page 页号  
	 * @param size 每页记录数
	 * @return 带评论的讨论列表
	 */
	List<GDiscuss> findGDiscussWithGAnswerByGid(int gid,int page,int size);
	
	GAnswer findAnswerById(int id);
	
	GDiscuss findGDiscussById(int id);
	
	/**
	 * 分页查找讨论的回复
	 * @param id 讨论id
	 * @param page 页号 
	 * @param size 每页记录数
	 * @return 带评论的讨论
	 */
	GDiscuss findGDiscussWithGAnswerById(int id,int page,int size);

	/**
	 * 统计小组讨论数目
	 * @param gid小组id
	 * @return
	 */
	int countGDiscuss(int gid);
	
	/**
	 * 统计问题的回复数
	 * @param gDiscussIds问题数组
	 * @return key为gdiscussId,value为统计数
	 */
	Map<Integer,Integer> countGAnswer(int[] gDiscussIds);
	
	/**
	 * 统计小组的集体智慧数目
	 * @param gid小组id
	 * @return
	 */
	int countWisdomedGDiscuss(int gid);
	
	/**
	 * 查找是集体智慧的讨论列表
	 * @param gid 小组id
	 * @param page 页号 
	 * @param size  每页记录数
	 * @return 讨论列表
	 */
	List<GDiscuss> findWisdomedGDiscuss(int gid,int page,int size);

}
